package src.model.gameWorld.pathfinding.astar.heuristic;

import src.model.gameObject.GameObject;
import src.model.gameWorld.Position;
import src.model.gameWorld.pathfinding.movement.MovementCost;

/**
 * <b>Overview</b>
 * A PathfindingHeuristic estimates the movement cost of getting from one position to another on the map.
 *
 * <b>Responsibilities</b>
 * Give an approximation for the movement cost of getting from one position on the map to another.
 *
 * <b>Collaborators</b>
 * PathfindingMap - Subcontractor: PathfindingMaps maintain the adjacency information that allows a quick calculation.
 *
 * <b>Implementor</b> - Bruce
 * <b>Tester</b> - Tim
 *
 * @author Bruce
 */
public interface PathfindingHeuristic
{
	/**
	 * @param start the starting PathfindingLocation.
	 * @param destination the destination PathfindingLocation.
	 * @return an approximation of the cost of moving from the starting PathfindingLocation to the destination PathfindingLocation.
	 */
	public MovementCost getHeuristicCost(GameObject mover, Position start, Position destination);
}